<?php


namespace app\common\validate\merchant;


use yiqiniu\extend\validate\YqnValidate;

/**
 * 商户登录信息
 * Class Merchant
 * @package app\common\validate\merchant
 */
class MerchantValid extends YqnValidate
{
    /**
     *  字段：'id'，    类型：'bigint',    是否为空：1,    说明：
     *  字段：'mer_id'，    类型：'character varying(20)',    是否为空：1,    说明：商户编号
     *  字段：'username'，    类型：'character varying(30)',    是否为空：1,    说明：登录用户名
     *  字段：'passwd'，    类型：'character varying(32)',    是否为空：1,    说明：密码
     *  字段：'mobile'，    类型：'character varying(30)',    是否为空：1,    说明：手机号码
     *  字段：'open_id'，    类型：'character varying(60)',    是否为空：1,    说明：微信openid
     *  字段：'union_id'，    类型：'character varying(60)',    是否为空：1,    说明：微信union_id
     *  字段：'is_manager'，    类型：'smallint',    是否为空：1,    说明：商户管理员 0 普通用户, 1 管理员
     *  字段：'role_id'，    类型：'integer',    是否为空：1,    说明：关联角色
     *  字段：'dept_id'，    类型：'integer',    是否为空：1,    说明：所在部门
     *  字段：'last_login_time'，    类型：'timestamp(0) without time zone',    是否为空：,    说明：最后登录时间
     *  字段：'last_login_ip'，    类型：'character varying(20)',    是否为空：1,    说明：最后登录IP
     *  字段：'login_num'，    类型：'integer',    是否为空：1,    说明：登录次数
     *  字段：'status'，    类型：'smallint',    是否为空：1,    说明：状态: 1正常,0禁用
     *  字段：'op_user'，    类型：'integer',    是否为空：1,    说明：操作人
     *  字段：'create_at'，    类型：'timestamp(0) without time zone',    是否为空：,    说明：创建时间
     *  字段：'update_at'，    类型：'timestamp(0) without time zone',    是否为空：,    说明：更新时间
     */

    /**
     *  验证规则
     */
    protected $rule = [
        'mer_id' => 'require',
        'key' => 'require',
        'admin_id' => 'require',
        'order_no' => 'require',
        'username' => 'require',
        'password' => 'require',
        'passwd' => 'require',
        'repeat_passwd' => 'require',
        'mobile' => 'require|unique:merchant,mobile|mobile',
        'is_manager' => 'require|number',
        'role_id' => 'require|number',
        'dept_id' => 'require|number',
        'status' => 'require|number',
        'title' => 'require',
        'company_name' => 'require',
        'address' => 'require',
        'contact' => 'require',
        'open_id' => 'require',
        'num' => 'require|number',
        'product' => 'require|array',
        'end_time' => 'require|date',
        'op_user' => 'require|dbExists:system_manager,id'
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名'    =>    '错误信息'
     *
     * @var array
     */
    protected $message = [
        'id.number' => '只能为数字类型',
        'id.dbExists' => '商户编号不存在',
        'admin_id.require' => '商户不存在',
        'mer_id.require' => '商户编号不能为空',
        'key.require' => '商户编号不能为空',
        'mer_id.dbExists' => '商户编号不存在',
        'username.require' => '登录用户名不能为空',
        'passwd.require' => '密码不能为空',
        'password.require' => '密码不能为空',
        'repeat_passwd.require' => '确认密码不能为空',
        'oldpasswd.require' => '旧密码不能为空',
        'mobile.require' => '手机号码不能为空',
        'mobile.unique' => '手机号已存在',
        'mobile.mobile' => '手机号不正确',
        'status.require' => '状态:不能为空',
        'status.number' => '状态:只能为数字类型',
        'dept_id.require' => '部门ID不能为空',
        'dept_id.number' => '部门ID只能为数字类型',
        'role_id.require' => '角色ID不能为空',
        'role_id.number' => '角色ID只能为数字类型',
        'title.require' => '商户名称不能为空',
        'address.require' => '地址不能为空',
        'contact.require' => '联系人不能为空',
        'open_id.require' => '微信openid不存在',

        'order_no.require' => '扫码记录编号不能为空',
        'product.require' => '扫码商品不能为空',
        'product.array' => '扫码商品只能为数组类型',
        'end_time.require' => '结束时间不能为空',
        'end_time.date' => '结束不能必须是日期格式',

        'num.require' => '库存不能为空',
        'num.number' => '库存只能为数字类型',
        'op_user.require' => '管理员不能为空',
        'op_user.dbExists' => '管理员信息未找到',
    ];


    //验证场景
    protected $scene = [


        //新增
        'add' => ['username', 'dept_id', 'role_id', 'mobile', 'passwd', 'repeat_passwd'],
        // 修改状态
        'edit_status' => ['id', 'status'],
        //重置密码
        'reset_pass' => ['oldpasswd', "password"],

        'login' => ['username', 'key', 'passwd'],
        // 修改
        'edit' => ['id'],

        'index' => ['mer_id'],

//        'submit_activity' => ['vp_id'],
        'submit_activity' => ['order_no'],
        'save_oauth' => ['admin_id'],
        'save_stock' => ['mer_id', 'num'],
        'edit_affiliation' => ['mer_id', 'op_user'],
    ];

    /**
     * 重置管理员密码
     * @return MerchantValid
     */
    public function sceneResetManagerPasswd()
    {
        return $this->only(['mer_id', 'password'])->append('mer_id', 'dbExists:merchant_info,mer_id');
    }

    /**
     *  编辑状态
     * @return MerchantValid
     */
    public function sceneEditMerchantStatus()
    {
        return $this->only(['mer_id', 'status'])->append('mer_id', 'dbExists:merchant_info,mer_id');
    }

    // 创建商户
    public function sceneCreate()
    {
        return $this->only(['title', 'contact', 'address', 'mobile', 'passwd', 'end_time'])
            ->append('end_time|结束', 'after:' . date('Y-m-d'));
    }

    // 修改结束时间
    public function sceneEditEndTime()
    {
        return $this->only(['mer_id', 'end_time'])->append('end_time|结束', 'after:' . date('Y-m-d'));
    }
}
